package com.jsz.peini.mapper.coupon;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

import com.jsz.peini.bean.coupon.CouponGet;
import com.jsz.peini.bean.coupon.CouponInfo;
import com.jsz.peini.bean.coupon.CouponInfoExample;
import com.jsz.peini.bean.coupon.CouponUser;

public interface CouponInfoMapper {
	
	int countByExample(CouponInfoExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(CouponInfo record);

    int insertSelective(CouponInfo record);

    List<CouponInfo> selectByExampleWithBLOBs(CouponInfoExample example);

    List<CouponInfo> selectByExample(CouponInfoExample example);

    CouponInfo selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(CouponInfo record);

    int updateByPrimaryKeyWithBLOBs(CouponInfo record);

    int updateByPrimaryKey(CouponInfo record);
 
	List<LinkedHashMap<String,Object>> getCouponInfoByUserId(CouponInfo couponInfo);
	
	List<LinkedHashMap<String,Object>> getCouponInfoByAll();
	
	/**
	 * 获取某个人获取到的某个优惠券的总量
	 * @param couponInfo
	 * @return
	 */
	List<CouponUser> getCouponUserByUserId(CouponInfo couponInfo);
	
	int insertCouponUserByUserId(CouponInfo couponInfo);
	
	int updateCouponInfoByOne(int id);
	//根据当前时间查询是否可以领取
	int selectCouponByDate(int couponId);
	//得到这一段时间内任务完成的最大数
	int selectMaxTask(CouponGet couponGet);
	//判断用户是否属于任务最大完成数内
	int selectIsMaxTask(CouponGet couponGet);
	//获取优惠券领取类型详细
	CouponGet selectGetByType(CouponGet couponGet);
	//获取用户完成任务数量
	int getSumTask(String userId);
	//获取优惠券发放数量
	CouponInfo getCouponInfoNum(int id);
	//更新优惠券用户表优惠券数量+1
	int setCouponUserByJF(CouponInfo couponInfo);
	//积分兑换优惠券减去用户积分
	int setUserAccountByJF(CouponInfo couponInfo);

	List<LinkedHashMap<String, Object>> getCouponInfoList_allUnGet_byScore();

	/**
	 * 根据优惠券id获取优惠券信息
	 * @param param
	 * @return
	 */
	HashMap<String, Object> getCouponInfoByPrimaryKeyId(
			HashMap<String, Object> param);
	
	/**
	 * 我的优惠券
	 * @author Han Guohong
	 * @param param
	 * @return
	 */
	List<HashMap<String, Object>> getMyCouponInfo(HashMap<String, Object> param);
	
	/**
	 * 支付可用优惠券
	 * @author Han Guohong
	 * @param param
	 * @return
	 */
	List<HashMap<String, Object>> getCouponInfoByPay(HashMap<String, Object> param);
	
	List<HashMap<String, Object>> getCouponInfoOrder(HashMap<String, Object> param);
	
	/**
	 * 获取即将过期的优惠券
	 * @author Han Guohong
	 * @param param
	 * @return
	 */
	List<HashMap<String, Object>> getOnInvalidCouponInfo(HashMap<String, Object> param);
	
	
	/**
	 * 获取新用户的注册奖励优惠券
	 * @author Han Guohong
	 * @return
	 */
	List<CouponInfo> getCouponInfoNewAward();
	
	CouponInfo getCouponInfoSignAward();
}